package com.cy.pj.sys.dao;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;

import com.cy.pj.common.vo.UserDeptVo;
import com.cy.pj.sys.entity.User;

@Mapper
public interface UserDao {

    /**
     * 根据用户名查询总记录数
     * @param username 用户名,进行模糊搜索
     * @return 总记录数
     */
    Long getRowCount(String username);

    /**
     * 根据id查询用户信息
     * @param id 用户id
     * @return 用户信息
     */
    UserDeptVo findObjectById(Long id);

    /**
     * 根据用户名查询用户信息
     * @param username 用户名
     * @return 用户信息
     */
    UserDeptVo getObjetByUserName(String username);

    /**
     * 更新用户信息
     * @param user 用户信息
     * @return 影响行数
     */
    Long getUserIdByUserName(String username);

    /**
     * 根据用户名查询用户是否存在
     * @param username 用户名
     * @return 1表示存在,0表示不存在
     */
    Integer isExits(String username);

    /**
     * 根据id查询用户是否存在
     * @param id 用户id
     * @return 1表示存在,0表示不存在
     */
    Integer isExitsById(Long id);

    /**
     * 根据用户名查询分页数据
     * @param username 用户名,进行模糊搜索
     * @param startIndex 开始位置   (当前页码-1)*pageSize
     * @param pageSize 每页大小
     * @return 分页数据
     */
    List<UserDeptVo> findPageObject(String username, Long startIndex,Integer pageSize,String orderColumn);

    /**
     * 根据id查询进行启用禁用用户
     * @param id 用户id
     * @return 影响行数
     */
    Integer validById(Long id,Integer valid,String modifiedUser);

    /**
     * 添加用户
     * @param user 用户信息
     * @return 影响行数
     */
    Integer insertObject(User user);

    /**
     * 删除用户
     * @param id 用户id
     * @return 影响行数
     */
    Integer deleteObject(Long id);

    /**
     * 更新用户信息
     * @param user 用户信息
     * @return 影响行数
     */
    Integer updateObject(User user);

    /**
     * 更新用户密码
     * @param id 用户id
     * @param password 密码
     * @param salt 盐值
     * @return 影响行数
     */
    Integer updatePassword(Long id,String password,String salt);

}
